iT邦幫忙

2023 iThome 鐵人賽

DAY 7
1

dbt 指令 flag

dbt 指令 flag 是你跑 dbt run 一定會寫到的東西,因為他可以幫你達成很多事

—select —exclude

  • --select , **--exclude**參數允許指定要執行的 model,對於只運行特定部分的 dbt 專案很有用,因為不需要全部 model 都跑,以節省 db 資源。而且用處很彈性也很廣泛

    • 廣泛: 除了基本的 dbt run test, 還有 compile, build, seed, snapshot, ls…等都可以用這兩個 flag 詳細支援的 command 看這

    • 彈性: 支援很多篩選條件

      • 基本的 tag, model name, 路徑選擇:
        https://ithelp.ithome.com.tw/upload/images/20230922/20162689YpIOu0wYxh.png

      • source 篩選:

        若是跑 dbt test 或 dbt build 可以篩選 source name

        dbt test --select source:jaffle_shop # jaffle_shop 是 source name
        
      • 聯集, 交集, all, 下游

        • 聯集用空格
        dbt run --select my_first_model my_second_model
        
        • 交集用逗號
        dbt run --select path:marts/finance,tag:nightly,config.materialized:table
        
        • 星號*全選, 加號+跑model上下游
        # +加號
        dbt run --select my_model+          # 選擇 my_model 和其下游表
        dbt run --select +my_model          # 選擇 my_model 和其上游表
        dbt run --select +my_model+         # 選擇 my_model 和其上游、下游表
        
        # 星號全選
        dbt run --select tag:nightly my_model finance.base.*
        
        
    • 合起來的範例

    # +加號
    # 跑 snowplow 下游的表
    dbt run --select source:snowplow+
    
    	# 跑 test tag:nightly 還要排除 source
    dbt test --select tag:nightly --exclude 'source:*'"
    
    # 跑 dbt test my_model 的所有 source
    dbt test --select 'source:*',my_model # source 星號要加單引號
    
    
    • dbt 執行的順序:
      以上提到的順序,dbt 將根據一個或多個 --select 標準所匹配的所有資源,按照選擇方法(例如tag, source, path),然後是 graph 操作符號(例如+),最後是集合操作符(聯集、交集、排除)的順序來執行

好用的 flag 太多了,還有其他的 flag 後面分享


上一篇
dbt docs 及 lineage 關係圖介紹
下一篇
如何用 dbt 客製化命名 bigquery dataset? dbt custom schema 原理及使用方式
系列文
如何借助 dbt 優化當代資料倉儲及資料工程師的水肥之路分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言